///**
// * 
// */
//package org.mspring.platform.web.stat.utils;
//
///**
// * 浏览器相关
// * 
// * @author Gao Youbo
// * @since 2013-6-22
// */
//public class BrowserUtils {
//    public void computeUserAgent(String userAgent) {
//        if (userAgent == null || userAgent.length() == 0) {
//            return;
//        }
//
//        // Mozilla/5.0 (compatible;
//        final int MOZILLA_COMPATIBLE_OFFSET = 25;
//
//        boolean is360SE = userAgent.endsWith("360SE)");
//
//        if (is360SE) {
//            browser360SECount.incrementAndGet();
//        }
//
//        boolean isIE = userAgent.startsWith("MSIE", MOZILLA_COMPATIBLE_OFFSET);
//        int iePrefixIndex = 30; // "Mozilla/5.0 (compatible; MSIE ".length();
//
//        boolean isGoogleToolbar = false;
//
//        if (!isIE) {
//            isGoogleToolbar = userAgent.startsWith("GoogleToolbar", MOZILLA_COMPATIBLE_OFFSET);
//            if (isGoogleToolbar) {
//                // MSIE
//                int tmp = userAgent.indexOf("IE ");
//                if (tmp != -1) {
//                    isIE = true;
//                    iePrefixIndex = tmp + 3;
//                }
//            }
//        }
//
//        if (isIE) {
//
//            browserIECount.incrementAndGet();
//
//            char v1 = ' ', v2 = ' ';
//            if (userAgent.length() > iePrefixIndex + 1) {
//                v1 = userAgent.charAt(iePrefixIndex);
//                v2 = userAgent.charAt(iePrefixIndex + 1);
//            } else if (userAgent.length() > iePrefixIndex) {
//                v1 = userAgent.charAt(iePrefixIndex);
//            }
//
//            switch (v1) {
//            case '5':
//                browserIE5Count.incrementAndGet();
//                break;
//            case '6':
//                browserIE6Count.incrementAndGet();
//                break;
//            case '7':
//                browserIE7Count.incrementAndGet();
//                break;
//            case '8':
//                browserIE8Count.incrementAndGet();
//                break;
//            case '9':
//                browserIE9Count.incrementAndGet();
//                break;
//            case '1':
//                if (v2 == '0') {
//                    browserIE10Count.incrementAndGet();
//                }
//                break;
//            default:
//                break;
//            }
//
//            osWindowsCount.incrementAndGet();
//
//            computeUserAgentIEWindowsVersion(userAgent);
//
//            if (userAgent.indexOf("Windows Phone") != -1) {
//                deviceWindowsPhoneCount.incrementAndGet();
//            }
//
//            return;
//        }
//
//        boolean isWindows = false;
//        boolean isMac = false;
//        boolean isIpad = false;
//        boolean isIPhone = false;
//        boolean isLinux = false;
//        boolean isX11 = false;
//        boolean isBSD = false;
//
//        if (userAgent.startsWith("Windows", 13)) {
//            isWindows = true;
//        } else if (userAgent.startsWith("Macintosh", 13)) {
//            isMac = true;
//        } else if (userAgent.startsWith("iPad", 13)) {
//            isIpad = true;
//            isMac = true;
//        } else if (userAgent.startsWith("iPhone", 13)) {
//            isIPhone = true;
//            isMac = true;
//        } else if (userAgent.startsWith("Linux", 13)) {
//            isLinux = true;
//        } else if (userAgent.startsWith("X11", 13)) {
//            isX11 = true;
//        }
//
//        boolean isAndroid = false;
//
//        if (isWindows) {
//            isWindows = true;
//
//            osWindowsCount.incrementAndGet();
//
//            if (userAgent.indexOf("Windows Phone") != -1) {
//                deviceWindowsPhoneCount.incrementAndGet();
//            }
//        } else if (isMac) {
//            isMac = true;
//            osMacOSXCount.incrementAndGet();
//            if (isIpad && userAgent.indexOf("iPad") != -1) {
//                deviceIpadCount.incrementAndGet();
//            } else if (isIPhone || userAgent.indexOf("iPhone") != -1) {
//                deviceIphoneCount.incrementAndGet();
//            }
//        } else if (isLinux) {
//            osLinuxCount.incrementAndGet();
//
//            isAndroid = computeUserAgentAndroid(userAgent);
//        } else if (userAgent.indexOf("Symbian") != -1) {
//            osSymbianCount.incrementAndGet();
//        } else if (userAgent.indexOf("Ubuntu") != -1) {
//            osLinuxCount.incrementAndGet();
//            osLinuxUbuntuCount.incrementAndGet();
//            isLinux = true;
//        }
//
//        if (isX11) {
//            if (userAgent.indexOf("OpenBSD") != -1) {
//                osOpenBSDCount.incrementAndGet();
//                isBSD = true;
//            } else if (userAgent.indexOf("FreeBSD") != -1) {
//                osFreeBSDCount.incrementAndGet();
//                isBSD = true;
//            } else if ((!isLinux) && userAgent.indexOf("Linux") != -1) {
//                osLinuxCount.incrementAndGet();
//                isLinux = true;
//            }
//        }
//
//        boolean isOpera = userAgent.startsWith("Opera");
//
//        if (isOpera) {
//            if (userAgent.indexOf("Windows") != -1) {
//                osWindowsCount.incrementAndGet();
//            } else if (userAgent.indexOf("Linux") != -1) {
//                osWindowsCount.incrementAndGet();
//            } else if (userAgent.indexOf("Macintosh") != -1) {
//                osMacOSXCount.incrementAndGet();
//            }
//            browserOperaCount.incrementAndGet();
//            return;
//        }
//
//        if (isWindows) {
//            computeUserAgentFirefoxWindowsVersion(userAgent);
//        }
//
//        if (isWindows || isMac || isLinux || isBSD) {
//            if (userAgent.indexOf("Chrome") != -1) {
//                browserChromeCount.incrementAndGet();
//                return;
//            }
//
//            if ((!isAndroid) && userAgent.indexOf("Safari") != -1) {
//                browserSafariCount.incrementAndGet();
//                return;
//            }
//
//            if (userAgent.indexOf("Firefox") != -1) {
//                browserFirefoxCount.incrementAndGet();
//                return;
//            }
//        }
//
//        if (userAgent.startsWith("User-Agent: ")) {
//            String rest = userAgent.substring("User-Agent: ".length());
//            computeUserAgent(rest);
//        }
//
//        boolean isJava = userAgent.startsWith("Java");
//
//        if (isJava) {
//            botCount.incrementAndGet();
//        }
//
//        if (userAgent.startsWith("msnbot")) {
//            botCount.incrementAndGet();
//            botMsnCount.incrementAndGet();
//        } else if (userAgent.startsWith("Sosospider+")) {
//            botCount.incrementAndGet();
//            botSosoCount.incrementAndGet();
//        } else if (userAgent.startsWith("Sogou")) {
//            botCount.incrementAndGet();
//            botSogouCount.incrementAndGet();
//        } else if (userAgent.startsWith("HuaweiSymantecSpider")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("Yeti/")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("mahonie")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("findlinks")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("Updownerbot")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("DoCoMo/")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("Crawl")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("SkimBot")) {
//            botCount.incrementAndGet();
//
//        } else if (userAgent.startsWith("YoudaoBot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//            botYoudaoCount.incrementAndGet();
//        } else if (userAgent.startsWith("bingbot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//            botBingCount.incrementAndGet();
//        } else if (userAgent.startsWith("Googlebot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//            botGoogleCount.incrementAndGet();
//        } else if (userAgent.startsWith("Baiduspider", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//            botBaiduCount.incrementAndGet();
//        } else if (userAgent.startsWith("MJ12bot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//            botBaiduCount.incrementAndGet();
//        } else if (userAgent.startsWith("Mail.RU/", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("Yahoo!", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//            botYahooCount.incrementAndGet();
//        } else if (userAgent.startsWith("KaloogaBot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("YandexBot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("Ezooms/", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("Exabot/", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("AhrefsBot/", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("YodaoBot/", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("BeetleBot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("archive.org_bot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("aiHitBot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//        } else if (userAgent.startsWith("EventGuruBot", MOZILLA_COMPATIBLE_OFFSET)) {
//            botCount.incrementAndGet();
//
//        } else if (userAgent.equals("Mozilla/5.0 ()")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.equals("\"Mozilla/5.0")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.equals("Mozilla")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.equals("-")) {
//            botCount.incrementAndGet();
//        } else if (userAgent.indexOf("Spider") != -1 || userAgent.indexOf("spider") != -1) {
//            botCount.incrementAndGet();
//        } else if (userAgent.indexOf("crawl") != -1 || userAgent.indexOf("Crawl") != -1) {
//            botCount.incrementAndGet();
//        } else if (userAgent.indexOf("Bot") != -1 || userAgent.indexOf("bot") != -1) {
//            botCount.incrementAndGet();
//        }
//
//        // Mozilla/5.0 ()
//        // Mozilla/5.0 (compatible; Mail.RU/2.0)
//        // Mozilla/5.0 (compatible; bingbot/2.0;
//        // YoudaoBot
//
//    }
//
//    private void computeUserAgentFirefoxWindowsVersion(String userAgent) {
//        if (userAgent.startsWith("Windows NT 5.1", 13)) {
//            osWindowsXPCount.incrementAndGet();
//        } else if (userAgent.startsWith("Windows NT 5.1", 25)) {
//            osWindowsXPCount.incrementAndGet();
//
//        } else if (userAgent.startsWith("Windows NT 6.0", 13)) {
//            osWindowsVistaCount.incrementAndGet();
//
//        } else if (userAgent.startsWith("Windows NT 6.1", 13)) {
//            osWindows7Count.incrementAndGet();
//
//        } else if (userAgent.startsWith("Windows NT 5.0", 13)) {
//            osWindows2000Count.incrementAndGet();
//        } else if (userAgent.startsWith("Windows NT 5.0", 25)) {
//            osWindows2000Count.incrementAndGet();
//        }
//    }
//
//    private void computeUserAgentIEWindowsVersion(String userAgent) {
//        if (userAgent.startsWith("Windows NT 5.1", 35)) {
//            osWindowsXPCount.incrementAndGet();
//        } else if (userAgent.startsWith("Windows NT 5.0", 35)) {
//            osWindows2000Count.incrementAndGet();
//        } else if (userAgent.startsWith("Windows NT 5.0", 36)) {
//            osWindows2000Count.incrementAndGet();
//        } else if (userAgent.startsWith("Windows NT 6.0", 35)) {
//            osWindowsVistaCount.incrementAndGet();
//        } else if (userAgent.startsWith("Windows NT 6.1", 35)) {
//            osWindows7Count.incrementAndGet();
//        } else if (userAgent.startsWith("Windows 98", 36)) {
//            osWindows98Count.incrementAndGet();
//        } else if (userAgent.startsWith("Windows 98", 35)) {
//            osWindows98Count.incrementAndGet();
//        } else if (userAgent.startsWith("Windows XP", 35)) {
//            osWindowsXPCount.incrementAndGet();
//        } else if (userAgent.startsWith("Windows XP", 34)) {
//            osWindowsXPCount.incrementAndGet();
//        }
//    }
//}
